#ifndef CUTILS_H
#define CUTILS_H

#include <QFont>
#include <QFontMetrics>
#include <QString>
#include <QVariant>
#include <QJsonObject>
#include <QImage>
#include <QPixmap>
#include <QBuffer>
/**
 * 计算给定字符串在指定字体下的宽度。
 *
 * @param font 指定的字体。
 * @param str 需要测量宽度的字符串。
 * @return 字符串在指定字体下的宽度（像素）。
 */
int WidthWithFixString(QFont font, QString str);

/**
 * 根据指定的宽度调整字体大小，使字符串能在指定宽度内完整显示，并在末尾追加指定后缀。
 *
 * @param font 初始字体，将根据宽度进行调整。
 * @param width 指定的宽度（像素）。
 * @param str 需要调整字体大小并能在指定宽度内显示的字符串。
 * @param suffix 要追加到字符串末尾的后缀。
 * @return 调整后的字符串。
 */
QString FontAdjustWidth(QFont font, int width, QString str,
                                     QString suffix = "...");

/**
 * 将QVariant类型转换为QString类型。
 *
 * @param variant 需要转换的QVariant类型变量。
 * @param precision 小数后保留位数。
 * @return 转换后的QString类型。
 */
QString variantToString(const QVariant &variant,int precision = -1);

//QMultiMap值唯一化，key可以重复，但是key-value保持唯一
QMultiMap<int, QString> multiMapValueUniqueness(const QMultiMap<int, QString>& multiMap);

//QString转QJsonObject
QJsonObject string2Json(const QString&);

//小数字符串直接截断（不四舍五入）
QString decimalStrDirectlyTruncated(QString decimalStr, int precision);

//pixmap转base64
QString encodeImageToBase64(const QPixmap &pixmap);

#endif // CUTILS_H
